/**
 * 
 */
package de.midnightdance.model.character;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

import de.midnightdance.model.character.vorteil.VorteilCHAR;

/**
 * @author Surfer
 *
 */
public class CharacterRequiemMensch extends CharacterRequiemID {
	//allgemeines	
	protected String 			status;
	protected int 				EPstart;	
		
	protected List<String> 		aliasNames;
	protected String 			konzept;
	//reviere
	protected String			zuflucht;
	protected String 			zufluchtsicherheit;
	protected String 			sicherungsMassnahmen;	
	protected String 			schluesselort;
	//tugend und suende 
	protected String 			tugend;
	protected String 			suende;
	protected List<Makel> 		makels;	
	//steigerung
	protected List<Steigerung> 	steigerungen;
	protected List<EpAntrag> 	epAntraege;
	//hintergrund 
	protected String 			stinoWoche;	
	protected String 			hintergrund; 
	//werte
	protected int 				startBlut;
	protected int 				blutmaximum;
	protected int 				gesundheit;	
	protected int 				ausweichenHieb;
	protected int 				ausweichenSchuss;
	//vorteile
	protected List<VorteilCHAR>	vorteile;	
	
	
	public CharacterRequiemMensch() {
		super();
		aliasNames 		= new ArrayList<String>();
		makels 			= new ArrayList<Makel>();
		steigerungen	= new ArrayList<Steigerung>();
		epAntraege 		= new ArrayList<EpAntrag>();
		vorteile		= new ArrayList<VorteilCHAR>();
	}

	/* (non-Javadoc)
	 * @see de.cbf.util.uuidheader.entities.UUIDHeader#takeOverEntityData(de.cbf.util.uuidheader.entities.UUIDHeader)
	 */
	@Override
	protected void takeOverEntityData(Object aOther) {
		super.takeOverEntityData(aOther);
		if (aOther instanceof CharacterRequiemMensch) {
			CharacterRequiemMensch otherCharacter = (CharacterRequiemMensch) aOther;
			//listen
			aliasNames 		= new ArrayList<String>(otherCharacter.aliasNames);
			makels 			= new ArrayList<Makel>(otherCharacter.makels);
			steigerungen	= new ArrayList<Steigerung>(otherCharacter.steigerungen);
			epAntraege 		= new ArrayList<EpAntrag>(otherCharacter.epAntraege);
			vorteile		= new ArrayList<VorteilCHAR>(otherCharacter.vorteile);
			//
			status 					= otherCharacter.status;
			EPstart 				= otherCharacter.EPstart;	
			spielerName 			= otherCharacter.spielerName;
			spielerEmail 			= otherCharacter.spielerEmail;
			konzept 				= otherCharacter.konzept;			
			zuflucht 				= otherCharacter.zuflucht;
			zufluchtsicherheit 		= otherCharacter.zufluchtsicherheit;
			sicherungsMassnahmen 	= otherCharacter.sicherungsMassnahmen;	
			schluesselort 			= otherCharacter.schluesselort;
			tugend 					= otherCharacter.tugend;
			suende 					= otherCharacter.suende;
			stinoWoche 				= otherCharacter.stinoWoche;	
			hintergrund 			= otherCharacter.hintergrund; 			
			startBlut				= otherCharacter.startBlut;
			blutmaximum 			= otherCharacter.blutmaximum;
			gesundheit 				= otherCharacter.gesundheit;	
			ausweichenHieb 			= otherCharacter.ausweichenHieb;
			ausweichenSchuss 		= otherCharacter.ausweichenSchuss;			
		}
	}
	
	public Iterator<Steigerung> getSteigerungenIterator() {
		return steigerungen.iterator();
	}
	
	/**
	 * for webservice
	 * @return
	 * 
	 */
	public Steigerung[] getSteigerungen() {
		return steigerungen.toArray(new Steigerung[steigerungen.size()]);
	}
	
	/**
	 * for webservice
	 * @param value
	 */
	public void setSteigerungen(Steigerung[] value) {
		steigerungen.clear();
		steigerungen.addAll(Arrays.asList(value));
	}

	public boolean addSteigerung(Steigerung steigerung) {
		return steigerungen.add(steigerung);
	}
	public boolean removeSteigerung(Steigerung steigerung) {
		return steigerungen.remove(steigerung);
	}
	
	public Iterator<EpAntrag> getEpAntraegeIterator() {
		return epAntraege.iterator();
	}	
	public EpAntrag[] getEpAntraege() {
		return epAntraege.toArray(new EpAntrag[epAntraege.size()]);
	}	
	public void setEpAntraege(EpAntrag[] value) {
		epAntraege.clear();
		epAntraege.addAll(Arrays.asList(value));
	}
	public boolean addEpAntrag(EpAntrag epAntrag) {
		return epAntraege.add(epAntrag);
	}
	public boolean removeEpAntrag(EpAntrag epAntrag) {
		return epAntraege.remove(epAntrag);
	}

	public Iterator<String> getAliasNamesIterator(){
		return aliasNames.iterator();
	}
	public String[] getAliasNames() {
		return aliasNames.toArray(new String[aliasNames.size()]);
	}	
	public void setAliasNames(String[] value) {
		aliasNames.clear();
		aliasNames.addAll(Arrays.asList(value));
	}
	public boolean addAliasName(String value){
		return aliasNames.add(value);
	}
	public boolean removeAliasName(String value){
		return aliasNames.remove(value);
	}
	public Iterator<Makel> getMakelIterator(){
		return makels.iterator();
	}
	public Makel[] getMakels() {
		return makels.toArray(new Makel[makels.size()]);
	}	
	public void setMakels(Makel[] value) {
		makels.clear();
		makels.addAll(Arrays.asList(value));
	}
	public boolean addMakel(Makel value){
		return makels.add(value);
	}
	public boolean removeMakel(Makel value){
		return makels.remove(value);
	}
	public Iterator<VorteilCHAR> getVorteilIterator(){
		return vorteile.iterator();
	}
	public VorteilCHAR[] getVorteile() {
		return vorteile.toArray(new VorteilCHAR[vorteile.size()]);
	}	
	public void setVorteile(VorteilCHAR[] value) {
		vorteile.clear();
		vorteile.addAll(Arrays.asList(value));
	}
	public boolean addVorteil(VorteilCHAR value){
		return vorteile.add(value);
	}
	public boolean removeVorteil(VorteilCHAR value){
		return vorteile.remove(value);
	}

	/**
	 * @return the status
	 */
	public String getStatus() {
		return status;
	}

	/**
	 * @param status the status to set
	 */
	public void setStatus(String status) {
		this.status = status;
	}

	/**
	 * @return the ePstart
	 */
	public int getEPstart() {
		return EPstart;
	}

	/**
	 * @param ePstart the ePstart to set
	 */
	public void setEPstart(int ePstart) {
		EPstart = ePstart;
	}

	/**
	 * @return the konzept
	 */
	public String getKonzept() {
		return konzept;
	}

	/**
	 * @param konzept the konzept to set
	 */
	public void setKonzept(String konzept) {
		this.konzept = konzept;
	}

	/**
	 * @return the zuflucht
	 */
	public String getZuflucht() {
		return zuflucht;
	}

	/**
	 * @param zuflucht the zuflucht to set
	 */
	public void setZuflucht(String zuflucht) {
		this.zuflucht = zuflucht;
	}

	/**
	 * @return the zufluchtsicherheit
	 */
	public String getZufluchtsicherheit() {
		return zufluchtsicherheit;
	}

	/**
	 * @param zufluchtsicherheit the zufluchtsicherheit to set
	 */
	public void setZufluchtsicherheit(String zufluchtsicherheit) {
		this.zufluchtsicherheit = zufluchtsicherheit;
	}

	/**
	 * @return the sicherungsMassnahmen
	 */
	public String getSicherungsMassnahmen() {
		return sicherungsMassnahmen;
	}

	/**
	 * @param sicherungsMassnahmen the sicherungsMassnahmen to set
	 */
	public void setSicherungsMassnahmen(String sicherungsMassnahmen) {
		this.sicherungsMassnahmen = sicherungsMassnahmen;
	}

	/**
	 * @return the schluesselort
	 */
	public String getSchluesselort() {
		return schluesselort;
	}

	/**
	 * @param schluesselort the schluesselort to set
	 */
	public void setSchluesselort(String schluesselort) {
		this.schluesselort = schluesselort;
	}

	/**
	 * @return the tugend
	 */
	public String getTugend() {
		return tugend;
	}

	/**
	 * @param tugend the tugend to set
	 */
	public void setTugend(String tugend) {
		this.tugend = tugend;
	}

	/**
	 * @return the suende
	 */
	public String getSuende() {
		return suende;
	}

	/**
	 * @param suende the suende to set
	 */
	public void setSuende(String suende) {
		this.suende = suende;
	}

	
	/**
	 * @return the stinoWoche
	 */
	public String getStinoWoche() {
		return stinoWoche;
	}

	/**
	 * @param stinoWoche the stinoWoche to set
	 */
	public void setStinoWoche(String stinoWoche) {
		this.stinoWoche = stinoWoche;
	}

	/**
	 * @return the hintergrund
	 */
	public String getHintergrund() {
		return hintergrund;
	}

	/**
	 * @param hintergrund the hintergrund to set
	 */
	public void setHintergrund(String hintergrund) {
		this.hintergrund = hintergrund;
	}

	/**
	 * @return the startBlut
	 */
	public int getStartBlut() {
		return startBlut;
	}

	/**
	 * @param startBlut the startBlut to set
	 */
	public void setStartBlut(int startBlut) {
		this.startBlut = startBlut;
	}

	/**
	 * @return the blutmaximum
	 */
	public int getBlutmaximum() {
		return blutmaximum;
	}

	/**
	 * @param blutmaximum the blutmaximum to set
	 */
	public void setBlutmaximum(int blutmaximum) {
		this.blutmaximum = blutmaximum;
	}

	/**
	 * @return the gesundheit
	 */
	public int getGesundheit() {
		return gesundheit;
	}

	/**
	 * @param gesundheit the gesundheit to set
	 */
	public void setGesundheit(int gesundheit) {
		this.gesundheit = gesundheit;
	}

	/**
	 * @return the ausweichenHieb
	 */
	public int getAusweichenHieb() {
		return ausweichenHieb;
	}

	/**
	 * @param ausweichenHieb the ausweichenHieb to set
	 */
	public void setAusweichenHieb(int ausweichenHieb) {
		this.ausweichenHieb = ausweichenHieb;
	}

	/**
	 * @return the ausweichenSchuss
	 */
	public int getAusweichenSchuss() {
		return ausweichenSchuss;
	}

	/**
	 * @param ausweichenSchuss the ausweichenSchuss to set
	 */
	public void setAusweichenSchuss(int ausweichenSchuss) {
		this.ausweichenSchuss = ausweichenSchuss;
	}

	
}
